SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE FUNCTION [dbo].[FU_NUME_TEXT_Q01] 
/*------------------------------------------------------*/  
/*---- Empresa           : OFISIS S.A.              ----*/  
/*---- Cliente           : OFISIS S.A.              ----*/  
/*---- Nombre FU         : FU_NUME_TEXT_Q01         ----*/  
/*---- Desarrollado por  : LAAP						----*/  
/*---- Fecha Creaci>n    : 19/01/2009               ----*/  
/*---- Base de Datos     : SLQ Server               ----*/  
/*---- Versi>n           : 9.0                      ----*/  
/*------------------------------------------------------*/  
/*------------------------------------------------------*/  
/*---  Modificado 1 por     :						----*/
/*---  Fecha Modificaci¢n   :						----*/
/*---  Detalle Modificaci¢n :						----*/
/*------------------------------------------------------*/  
/*------------------------------------------------------*/  
/*--- Drop FUNCTION FU_NUME_TEXT_Q01				----*/
/*--- Grant All on FU_NUME_TEXT_Q01 To Public	    ----*/
/*--- SELECT DBO.FU_NUME_TEXT_Q01 (23)				 ---*/
/*------------------------------------------------------*/     
(
@INIM_CONV TD_NU_016_004)
RETURNS varchar(2000)
AS
BEGIN
	DECLARE 
	
	@VNNU_ENTE	INT,
	@lcRetorno	VARCHAR(512),
	@lnTerna	INT,
	@lcMiles	VARCHAR(512),
	@lcCadena	VARCHAR(512),
	@lnUnidades INT,
	@lnDecenas	INT,
	@lnCentenas INT,
	@lnFraccion INT

	SELECT @VNNU_ENTE = CAST(@INIM_CONV AS INT),
	@lnFraccion = (@INIM_CONV - @VNNU_ENTE) * 100,
	@lcRetorno = '',
	@lnTerna = 1
	WHILE @VNNU_ENTE > 0
	BEGIN 
		SELECT @lcCadena = ''
		SELECT @lnUnidades = @VNNU_ENTE % 10
		SELECT @VNNU_ENTE = CAST(@VNNU_ENTE/10 AS INT)
		SELECT @lnDecenas = @VNNU_ENTE % 10
		SELECT @VNNU_ENTE = CAST(@VNNU_ENTE/10 AS INT)
		SELECT @lnCentenas = @VNNU_ENTE % 10
		SELECT @VNNU_ENTE = CAST(@VNNU_ENTE/10 AS INT)
		-- Unidades
		SELECT @lcCadena =
		CASE
			WHEN @lnUnidades = 1 AND @lnTerna = 1 THEN 'Uno ' + @lcCadena
			WHEN @lnUnidades = 1 AND @lnTerna <> 1 THEN 'Un ' + @lcCadena
			WHEN @lnUnidades = 2 THEN 'Dos ' + @lcCadena
			WHEN @lnUnidades = 3 THEN 'Tres ' + @lcCadena
			WHEN @lnUnidades = 4 THEN 'Cuatro ' + @lcCadena
			WHEN @lnUnidades = 5 THEN 'Cinco ' + @lcCadena
			WHEN @lnUnidades = 6 THEN 'Seis ' + @lcCadena
			WHEN @lnUnidades = 7 THEN 'Siete ' + @lcCadena
			WHEN @lnUnidades = 8 THEN 'Ocho ' + @lcCadena
			WHEN @lnUnidades = 9 THEN 'Nueve ' + @lcCadena
		ELSE @lcCadena
		END
		-- decenas
		SELECT @lcCadena =
		CASE
			WHEN @lnDecenas = 1 THEN
			CASE @lnUnidades
				WHEN 0 THEN 'Diez '
				WHEN 1 THEN 'Once '
				WHEN 2 THEN 'Doce '
				WHEN 3 THEN 'Trece '
				WHEN 4 THEN 'Catorce '
				WHEN 5 THEN 'Quince '
			ELSE 'Dieci' + @lcCadena
			END
			WHEN @lnDecenas = 2 AND @lnUnidades = 0 THEN 'Veinte ' + @lcCadena
			WHEN @lnDecenas = 2 AND @lnUnidades <> 0 THEN 'Veinti' + @lcCadena
			WHEN @lnDecenas = 3 AND @lnUnidades = 0 THEN 'Treinta ' + @lcCadena
			WHEN @lnDecenas = 3 AND @lnUnidades <> 0 THEN 'Treinta y ' + @lcCadena
			WHEN @lnDecenas = 4 AND @lnUnidades = 0 THEN 'Cuarenta ' + @lcCadena
			WHEN @lnDecenas = 4 AND @lnUnidades <> 0 THEN 'Cuarenta y ' + @lcCadena
			WHEN @lnDecenas = 5 AND @lnUnidades = 0 THEN 'Cincuenta ' + @lcCadena
			WHEN @lnDecenas = 5 AND @lnUnidades <> 0 THEN 'Cincuenta y ' + @lcCadena
			WHEN @lnDecenas = 6 AND @lnUnidades = 0 THEN 'Sesenta ' + @lcCadena
			WHEN @lnDecenas = 6 AND @lnUnidades <> 0 THEN 'Sesenta y ' + @lcCadena
			WHEN @lnDecenas = 7 AND @lnUnidades = 0 THEN 'Setenta ' + @lcCadena
			WHEN @lnDecenas = 7 AND @lnUnidades <> 0 THEN 'Setenta Y ' + @lcCadena
			WHEN @lnDecenas = 8 AND @lnUnidades = 0 THEN 'Ochenta ' + @lcCadena
			WHEN @lnDecenas = 8 AND @lnUnidades <> 0 THEN 'Ochenta y ' + @lcCadena
			WHEN @lnDecenas = 9 AND @lnUnidades = 0 THEN 'Noventa ' + @lcCadena
			WHEN @lnDecenas = 9 AND @lnUnidades <> 0 THEN 'Noventa y ' + @lcCadena
		ELSE @lcCadena
		END
		-- centenas
		SELECT @lcCadena =
		CASE
			WHEN @lnCentenas = 1 AND @lnUnidades = 0 AND @lnDecenas = 0 THEN 'Cien ' + @lcCadena
			WHEN @lnCentenas = 1 AND NOT(@lnUnidades = 0 AND @lnDecenas = 0) THEN 'Ciento ' + @lcCadena
			WHEN @lnCentenas = 2 THEN 'Doscientos ' + @lcCadena
			WHEN @lnCentenas = 3 THEN 'Trescientos ' + @lcCadena
			WHEN @lnCentenas = 4 THEN 'Cuatrocientos ' + @lcCadena
			WHEN @lnCentenas = 5 THEN 'Quinientos ' + @lcCadena
			WHEN @lnCentenas = 6 THEN 'Seiscientos ' + @lcCadena
			WHEN @lnCentenas = 7 THEN 'Setecientos ' + @lcCadena
			WHEN @lnCentenas = 8 THEN 'Ochocientos ' + @lcCadena
			WHEN @lnCentenas = 9 THEN 'Novecientos ' + @lcCadena
		ELSE @lcCadena
		END
		--Terna
		SELECT @lcCadena =
		CASE
			WHEN @lnTerna = 1 THEN @lcCadena
			WHEN @lnTerna = 2 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' Mil '
			WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
			@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0 THEN @lcCadena + ' Millon '
			WHEN @lnTerna = 3 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) AND
			NOT (@lnUnidades = 1 AND @lnDecenas = 0 AND @lnCentenas = 0) THEN @lcCadena + ' Millones '
			WHEN @lnTerna = 4 AND (@lnUnidades + @lnDecenas + @lnCentenas <> 0) THEN @lcCadena + ' Mil Millones '
		ELSE ''
		END
		--Armo el retorno terna a terna
		SELECT @lcRetorno = @lcCadena + @lcRetorno
		SELECT @lnTerna = @lnTerna + 1
	END

	IF @lnTerna = 1
	SELECT @lcRetorno = 'Cero'

	RETURN UPPER(RTRIM(@lcRetorno) + ' Con ' + LTRIM(STR(@lnFraccion,2)) + '/100')

END 



GO
